package com.sky.service;

import java.util.Map;

public interface EmailService {

    /**
     * 发送验证码邮件
     *
     * @param userEmail 用户邮箱
     * @param userName 用户名
     * @param permissionName 用户正在进行的操作名称(如:修改密码、删除账号等)
     * @param verificationCode 验证码
     */
    void sendVerificationCodeEmail(String userEmail,
                                 String userName,
                                 String permissionName,
                                 String verificationCode);

    /**
     * 借阅图书逾期提醒邮件
     *
     * @param userEmail   用户邮箱
     * @param userName    用户名
     * @param bookName    书名
     * @param borrowDate  借阅日期
     * @param dueDate     应还日期
     * @param overdueDays 逾期天数
     * @param nowData     目前时间
     */
    void sendOverdueReminderEmail(String userEmail,
                                  String userName,
                                  String bookName,
                                  String borrowDate,
                                  String dueDate,
                                  Integer overdueDays,
                                  String nowData);

    /**
     * 借阅申请被拒绝提醒邮件
     *
     * @param userEmail 用户邮箱
     * @param userName 用户名
     * @param bookName 书名
     * @param requestDate 申请日期
     * @param reviewDate 审核日期
     * @param rejectReason 拒绝原因
     * @param nowData 当前日期
     */
    void sendRejectLoanRequestEmail(String userEmail,
                                  String userName,
                                  String bookName,
                                  String requestDate,
                                  String reviewDate,
                                  String rejectReason,
                                  String nowData);

    /**
     * 发送重置密码验证码邮件
     * 验证码有效期为15分钟
     *
     * @param userEmail 用户邮箱
     * @param userName 用户名
     * @param verificationCode 验证码
     */
    void sendResetPasswordVerificationCode(String userEmail,
                                         String userName,
                                         String verificationCode);

    /**
     * 发送敏感操作验证码邮件
     *
     * @param userEmail 用户邮箱
     * @param userName 用户名
     * @param operationName 操作名称
     * @param verificationCode 验证码
     */
    void sendCaptchaEmail(String userEmail,
                         String userName,
                         String operationName,
                         String verificationCode);
}
